/*
 * SysML v2 REST/HTTP Pilot Implementation
 * Copyright (C) 2020 InterCAX LLC
 * Copyright (C) 2020 California Institute of Technology ("Caltech")
 * Copyright (C) 2021 Twingineer LLC
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 *
 * @license LGPL-3.0-or-later <http://spdx.org/licenses/LGPL-3.0-or-later>
 */

@AnyMetaDefs(value = {
        @AnyMetaDef(name = "DataMetaDef", metaType = "string", idType = "java.util.UUID",
                metaValues = {
                        @MetaValue(value = "ExternalData", targetEntity = ExternalDataImpl.class),
                        @MetaValue(value = "ExternalRelationship", targetEntity = ExternalRelationshipImpl.class),
                        @MetaValue(value = "ProjectUsage", targetEntity = ProjectUsageImpl.class),

                        @MetaValue(value = "AcceptActionUsage", targetEntity = AcceptActionUsageImpl.class),
                        @MetaValue(value = "ActionDefinition", targetEntity = ActionDefinitionImpl.class),
                        @MetaValue(value = "ActionUsage", targetEntity = ActionUsageImpl.class),
                        @MetaValue(value = "ActorMembership", targetEntity = ActorMembershipImpl.class),
                        @MetaValue(value = "AllocationDefinition", targetEntity = AllocationDefinitionImpl.class),
                        @MetaValue(value = "AllocationUsage", targetEntity = AllocationUsageImpl.class),
                        @MetaValue(value = "AnalysisCaseDefinition", targetEntity = AnalysisCaseDefinitionImpl.class),
                        @MetaValue(value = "AnalysisCaseUsage", targetEntity = AnalysisCaseUsageImpl.class),
                        @MetaValue(value = "AnnotatingElement", targetEntity = AnnotatingElementImpl.class),
                        @MetaValue(value = "Annotation", targetEntity = AnnotationImpl.class),
                        @MetaValue(value = "AssertConstraintUsage", targetEntity = AssertConstraintUsageImpl.class),
                        @MetaValue(value = "AssignmentActionUsage", targetEntity = AssignmentActionUsageImpl.class),
                        @MetaValue(value = "Association", targetEntity = AssociationImpl.class),
                        @MetaValue(value = "AssociationStructure", targetEntity = AssociationStructureImpl.class),
                        @MetaValue(value = "AttributeDefinition", targetEntity = AttributeDefinitionImpl.class),
                        @MetaValue(value = "AttributeUsage", targetEntity = AttributeUsageImpl.class),
                        @MetaValue(value = "Behavior", targetEntity = BehaviorImpl.class),
                        @MetaValue(value = "BindingConnector", targetEntity = BindingConnectorImpl.class),
                        @MetaValue(value = "BindingConnectorAsUsage", targetEntity = BindingConnectorAsUsageImpl.class),
                        @MetaValue(value = "BooleanExpression", targetEntity = BooleanExpressionImpl.class),
                        @MetaValue(value = "CalculationDefinition", targetEntity = CalculationDefinitionImpl.class),
                        @MetaValue(value = "CalculationUsage", targetEntity = CalculationUsageImpl.class),
                        @MetaValue(value = "CaseDefinition", targetEntity = CaseDefinitionImpl.class),
                        @MetaValue(value = "CaseUsage", targetEntity = CaseUsageImpl.class),
                        @MetaValue(value = "Class", targetEntity = ClassImpl.class),
                        @MetaValue(value = "Classifier", targetEntity = ClassifierImpl.class),
                        @MetaValue(value = "CollectExpression", targetEntity = CollectExpressionImpl.class),
                        @MetaValue(value = "Comment", targetEntity = CommentImpl.class),
                        @MetaValue(value = "ConcernDefinition", targetEntity = ConcernDefinitionImpl.class),
                        @MetaValue(value = "ConcernUsage", targetEntity = ConcernUsageImpl.class),
                        @MetaValue(value = "ConjugatedPortDefinition", targetEntity = ConjugatedPortDefinitionImpl.class),
                        @MetaValue(value = "ConjugatedPortTyping", targetEntity = ConjugatedPortTypingImpl.class),
                        @MetaValue(value = "Conjugation", targetEntity = ConjugationImpl.class),
                        @MetaValue(value = "ConnectionDefinition", targetEntity = ConnectionDefinitionImpl.class),
                        @MetaValue(value = "ConnectionUsage", targetEntity = ConnectionUsageImpl.class),
                        @MetaValue(value = "Connector", targetEntity = ConnectorImpl.class),
                        @MetaValue(value = "ConnectorAsUsage", targetEntity = ConnectorAsUsageImpl.class),
                        @MetaValue(value = "ConstraintDefinition", targetEntity = ConstraintDefinitionImpl.class),
                        @MetaValue(value = "ConstraintUsage", targetEntity = ConstraintUsageImpl.class),
                        @MetaValue(value = "ControlNode", targetEntity = ControlNodeImpl.class),
                        @MetaValue(value = "DataType", targetEntity = DataTypeImpl.class),
                        @MetaValue(value = "DecisionNode", targetEntity = DecisionNodeImpl.class),
                        @MetaValue(value = "Definition", targetEntity = DefinitionImpl.class),
                        @MetaValue(value = "Dependency", targetEntity = DependencyImpl.class),
                        @MetaValue(value = "Differencing", targetEntity = DifferencingImpl.class),
                        @MetaValue(value = "Disjoining", targetEntity = DisjoiningImpl.class),
                        @MetaValue(value = "Documentation", targetEntity = DocumentationImpl.class),
                        @MetaValue(value = "Element", targetEntity = ElementImpl.class),
                        @MetaValue(value = "ElementFilterMembership", targetEntity = ElementFilterMembershipImpl.class),
                        @MetaValue(value = "EndFeatureMembership", targetEntity = EndFeatureMembershipImpl.class),
                        @MetaValue(value = "EnumerationDefinition", targetEntity = EnumerationDefinitionImpl.class),
                        @MetaValue(value = "EnumerationUsage", targetEntity = EnumerationUsageImpl.class),
                        @MetaValue(value = "EventOccurrenceUsage", targetEntity = EventOccurrenceUsageImpl.class),
                        @MetaValue(value = "ExhibitStateUsage", targetEntity = ExhibitStateUsageImpl.class),
                        @MetaValue(value = "Expose", targetEntity = ExposeImpl.class),
                        @MetaValue(value = "Expression", targetEntity = ExpressionImpl.class),
                        @MetaValue(value = "Feature", targetEntity = FeatureImpl.class),
                        @MetaValue(value = "FeatureChainExpression", targetEntity = FeatureChainExpressionImpl.class),
                        @MetaValue(value = "FeatureChaining", targetEntity = FeatureChainingImpl.class),
                        @MetaValue(value = "FeatureInverting", targetEntity = FeatureInvertingImpl.class),
                        @MetaValue(value = "FeatureMembership", targetEntity = FeatureMembershipImpl.class),
                        @MetaValue(value = "FeatureReferenceExpression", targetEntity = FeatureReferenceExpressionImpl.class),
                        @MetaValue(value = "FeatureTyping", targetEntity = FeatureTypingImpl.class),
                        @MetaValue(value = "FeatureValue", targetEntity = FeatureValueImpl.class),
                        @MetaValue(value = "Featuring", targetEntity = FeaturingImpl.class),
                        @MetaValue(value = "FlowConnectionDefinition", targetEntity = FlowConnectionDefinitionImpl.class),
                        @MetaValue(value = "FlowConnectionUsage", targetEntity = FlowConnectionUsageImpl.class),
                        @MetaValue(value = "ForLoopActionUsage", targetEntity = ForLoopActionUsageImpl.class),
                        @MetaValue(value = "ForkNode", targetEntity = ForkNodeImpl.class),
                        @MetaValue(value = "FramedConcernMembership", targetEntity = FramedConcernMembershipImpl.class),
                        @MetaValue(value = "Function", targetEntity = FunctionImpl.class),
                        @MetaValue(value = "IfActionUsage", targetEntity = IfActionUsageImpl.class),
                        @MetaValue(value = "Import", targetEntity = ImportImpl.class),
                        @MetaValue(value = "IncludeUseCaseUsage", targetEntity = IncludeUseCaseUsageImpl.class),
                        @MetaValue(value = "Interaction", targetEntity = InteractionImpl.class),
                        @MetaValue(value = "InterfaceDefinition", targetEntity = InterfaceDefinitionImpl.class),
                        @MetaValue(value = "InterfaceUsage", targetEntity = InterfaceUsageImpl.class),
                        @MetaValue(value = "Intersecting", targetEntity = IntersectingImpl.class),
                        @MetaValue(value = "Invariant", targetEntity = InvariantImpl.class),
                        @MetaValue(value = "InvocationExpression", targetEntity = InvocationExpressionImpl.class),
                        @MetaValue(value = "ItemDefinition", targetEntity = ItemDefinitionImpl.class),
                        @MetaValue(value = "ItemFeature", targetEntity = ItemFeatureImpl.class),
                        @MetaValue(value = "ItemFlow", targetEntity = ItemFlowImpl.class),
                        @MetaValue(value = "ItemFlowEnd", targetEntity = ItemFlowEndImpl.class),
                        @MetaValue(value = "ItemUsage", targetEntity = ItemUsageImpl.class),
                        @MetaValue(value = "JoinNode", targetEntity = JoinNodeImpl.class),
                        @MetaValue(value = "LibraryPackage", targetEntity = LibraryPackageImpl.class),
                        @MetaValue(value = "LifeClass", targetEntity = LifeClassImpl.class),
                        @MetaValue(value = "LiteralBoolean", targetEntity = LiteralBooleanImpl.class),
                        @MetaValue(value = "LiteralExpression", targetEntity = LiteralExpressionImpl.class),
                        @MetaValue(value = "LiteralInfinity", targetEntity = LiteralInfinityImpl.class),
                        @MetaValue(value = "LiteralInteger", targetEntity = LiteralIntegerImpl.class),
                        @MetaValue(value = "LiteralRational", targetEntity = LiteralRationalImpl.class),
                        @MetaValue(value = "LiteralString", targetEntity = LiteralStringImpl.class),
                        @MetaValue(value = "LoopActionUsage", targetEntity = LoopActionUsageImpl.class),
                        @MetaValue(value = "Membership", targetEntity = MembershipImpl.class),
                        @MetaValue(value = "MembershipExpose", targetEntity = MembershipExposeImpl.class),
                        @MetaValue(value = "MembershipImport", targetEntity = MembershipImportImpl.class),
                        @MetaValue(value = "MergeNode", targetEntity = MergeNodeImpl.class),
                        @MetaValue(value = "Metaclass", targetEntity = MetaclassImpl.class),
                        @MetaValue(value = "MetadataAccessExpression", targetEntity = MetadataAccessExpressionImpl.class),
                        @MetaValue(value = "MetadataDefinition", targetEntity = MetadataDefinitionImpl.class),
                        @MetaValue(value = "MetadataFeature", targetEntity = MetadataFeatureImpl.class),
                        @MetaValue(value = "MetadataUsage", targetEntity = MetadataUsageImpl.class),
                        @MetaValue(value = "Multiplicity", targetEntity = MultiplicityImpl.class),
                        @MetaValue(value = "MultiplicityRange", targetEntity = MultiplicityRangeImpl.class),
                        @MetaValue(value = "Namespace", targetEntity = NamespaceImpl.class),
                        @MetaValue(value = "NamespaceExpose", targetEntity = NamespaceExposeImpl.class),
                        @MetaValue(value = "NamespaceImport", targetEntity = NamespaceImportImpl.class),
                        @MetaValue(value = "NullExpression", targetEntity = NullExpressionImpl.class),
                        @MetaValue(value = "ObjectiveMembership", targetEntity = ObjectiveMembershipImpl.class),
                        @MetaValue(value = "OccurrenceDefinition", targetEntity = OccurrenceDefinitionImpl.class),
                        @MetaValue(value = "OccurrenceUsage", targetEntity = OccurrenceUsageImpl.class),
                        @MetaValue(value = "OperatorExpression", targetEntity = OperatorExpressionImpl.class),
                        @MetaValue(value = "OwningMembership", targetEntity = OwningMembershipImpl.class),
                        @MetaValue(value = "Package", targetEntity = PackageImpl.class),
                        @MetaValue(value = "ParameterMembership", targetEntity = ParameterMembershipImpl.class),
                        @MetaValue(value = "PartDefinition", targetEntity = PartDefinitionImpl.class),
                        @MetaValue(value = "PartUsage", targetEntity = PartUsageImpl.class),
                        @MetaValue(value = "PerformActionUsage", targetEntity = PerformActionUsageImpl.class),
                        @MetaValue(value = "PortConjugation", targetEntity = PortConjugationImpl.class),
                        @MetaValue(value = "PortDefinition", targetEntity = PortDefinitionImpl.class),
                        @MetaValue(value = "PortUsage", targetEntity = PortUsageImpl.class),
                        @MetaValue(value = "Predicate", targetEntity = PredicateImpl.class),
                        @MetaValue(value = "Redefinition", targetEntity = RedefinitionImpl.class),
                        @MetaValue(value = "ReferenceSubsetting", targetEntity = ReferenceSubsettingImpl.class),
                        @MetaValue(value = "ReferenceUsage", targetEntity = ReferenceUsageImpl.class),
                        @MetaValue(value = "Relationship", targetEntity = RelationshipImpl.class),
                        @MetaValue(value = "RenderingDefinition", targetEntity = RenderingDefinitionImpl.class),
                        @MetaValue(value = "RenderingUsage", targetEntity = RenderingUsageImpl.class),
                        @MetaValue(value = "RequirementConstraintMembership", targetEntity = RequirementConstraintMembershipImpl.class),
                        @MetaValue(value = "RequirementDefinition", targetEntity = RequirementDefinitionImpl.class),
                        @MetaValue(value = "RequirementUsage", targetEntity = RequirementUsageImpl.class),
                        @MetaValue(value = "RequirementVerificationMembership", targetEntity = RequirementVerificationMembershipImpl.class),
                        @MetaValue(value = "ResultExpressionMembership", targetEntity = ResultExpressionMembershipImpl.class),
                        @MetaValue(value = "ReturnParameterMembership", targetEntity = ReturnParameterMembershipImpl.class),
                        @MetaValue(value = "SatisfyRequirementUsage", targetEntity = SatisfyRequirementUsageImpl.class),
                        @MetaValue(value = "SelectExpression", targetEntity = SelectExpressionImpl.class),
                        @MetaValue(value = "SendActionUsage", targetEntity = SendActionUsageImpl.class),
                        @MetaValue(value = "Specialization", targetEntity = SpecializationImpl.class),
                        @MetaValue(value = "StakeholderMembership", targetEntity = StakeholderMembershipImpl.class),
                        @MetaValue(value = "StateDefinition", targetEntity = StateDefinitionImpl.class),
                        @MetaValue(value = "StateSubactionMembership", targetEntity = StateSubactionMembershipImpl.class),
                        @MetaValue(value = "StateUsage", targetEntity = StateUsageImpl.class),
                        @MetaValue(value = "Step", targetEntity = StepImpl.class),
                        @MetaValue(value = "Structure", targetEntity = StructureImpl.class),
                        @MetaValue(value = "Subclassification", targetEntity = SubclassificationImpl.class),
                        @MetaValue(value = "SubjectMembership", targetEntity = SubjectMembershipImpl.class),
                        @MetaValue(value = "Subsetting", targetEntity = SubsettingImpl.class),
                        @MetaValue(value = "Succession", targetEntity = SuccessionImpl.class),
                        @MetaValue(value = "SuccessionAsUsage", targetEntity = SuccessionAsUsageImpl.class),
                        @MetaValue(value = "SuccessionFlowConnectionUsage", targetEntity = SuccessionFlowConnectionUsageImpl.class),
                        @MetaValue(value = "SuccessionItemFlow", targetEntity = SuccessionItemFlowImpl.class),
                        @MetaValue(value = "TextualRepresentation", targetEntity = TextualRepresentationImpl.class),
                        @MetaValue(value = "TransitionFeatureMembership", targetEntity = TransitionFeatureMembershipImpl.class),
                        @MetaValue(value = "TransitionUsage", targetEntity = TransitionUsageImpl.class),
                        @MetaValue(value = "TriggerInvocationExpression", targetEntity = TriggerInvocationExpressionImpl.class),
                        @MetaValue(value = "Type", targetEntity = TypeImpl.class),
                        @MetaValue(value = "TypeFeaturing", targetEntity = TypeFeaturingImpl.class),
                        @MetaValue(value = "Unioning", targetEntity = UnioningImpl.class),
                        @MetaValue(value = "Usage", targetEntity = UsageImpl.class),
                        @MetaValue(value = "UseCaseDefinition", targetEntity = UseCaseDefinitionImpl.class),
                        @MetaValue(value = "UseCaseUsage", targetEntity = UseCaseUsageImpl.class),
                        @MetaValue(value = "VariantMembership", targetEntity = VariantMembershipImpl.class),
                        @MetaValue(value = "VerificationCaseDefinition", targetEntity = VerificationCaseDefinitionImpl.class),
                        @MetaValue(value = "VerificationCaseUsage", targetEntity = VerificationCaseUsageImpl.class),
                        @MetaValue(value = "ViewDefinition", targetEntity = ViewDefinitionImpl.class),
                        @MetaValue(value = "ViewRenderingMembership", targetEntity = ViewRenderingMembershipImpl.class),
                        @MetaValue(value = "ViewUsage", targetEntity = ViewUsageImpl.class),
                        @MetaValue(value = "ViewpointDefinition", targetEntity = ViewpointDefinitionImpl.class),
                        @MetaValue(value = "ViewpointUsage", targetEntity = ViewpointUsageImpl.class),
                        @MetaValue(value = "WhileLoopActionUsage", targetEntity = WhileLoopActionUsageImpl.class),
                }),
})

@GenericGenerators(value = {
        @GenericGenerator(name = "UseExistingOrGenerateUUIDGenerator", strategy = "jpa.UseExistingOrGenerateUUIDGenerator")
})
package org.omg.sysml.lifecycle.impl;

import org.hibernate.annotations.*;
import org.omg.sysml.data.impl.ExternalDataImpl;
import org.omg.sysml.data.impl.ExternalRelationshipImpl;
import org.omg.sysml.data.impl.ProjectUsageImpl;
import org.omg.sysml.metamodel.impl.*;
